<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="szOgp" id="szOgp"><span data-lake-id="u008afb0b" id="u008afb0b">典型回答</span></h1>
  <p data-lake-id="u390440a5" id="u390440a5"><br></p>
  <p data-lake-id="u6b721660" id="u6b721660"><span data-lake-id="uc01d0cdc" id="uc01d0cdc">现在我们用到操作系统，无论是Windows、Linux还是MacOS等其实都是</span><strong><span data-lake-id="u38c60711" id="u38c60711">多用户多任务分时操作系统</span></strong><span data-lake-id="u9bef6e53" id="u9bef6e53">。使用这些操作系统的“用户”是可以“同时”干多件事的，这已经是日常习惯了，并没觉得有什么特别。</span></p>
  <p data-lake-id="u0a7fd787" id="u0a7fd787"><span data-lake-id="u3dff47a5" id="u3dff47a5">​</span><br></p>
  <p data-lake-id="u571f8855" id="u571f8855"><span data-lake-id="u3dfe53a8" id="u3dfe53a8">但是实际上，对于单CPU的计算机来说，在CPU中，同一时间是只能干一件事儿的。</span></p>
  <p data-lake-id="u2d0ce4f9" id="u2d0ce4f9"><span data-lake-id="u835d32d4" id="u835d32d4">​</span><br></p>
  <p data-lake-id="u5a025fcd" id="u5a025fcd"><strong><span data-lake-id="u6416bcd3" id="u6416bcd3">为了看起来像是“同时干多件事”，分时操作系统是把CPU的时间划分成长短基本相同的时间区间，即”时间片”。</span></strong><span data-lake-id="u712d8b04" id="u712d8b04">通过操作系统的管理，把这些时间片依次轮流地分配给各个“用户”使用。</span></p>
  <p data-lake-id="u7de94bdf" id="u7de94bdf"><span data-lake-id="uf1119cc2" id="uf1119cc2">​</span><br></p>
  <p data-lake-id="u7fcd92cb" id="u7fcd92cb"><span data-lake-id="u4037abfb" id="u4037abfb">这样，给用户的感觉是他在同时的进行听歌和打游戏，实际上，在操作系统中，CPU是在游戏进程和音乐播放器进程之间来回切换执行的。</span></p>
  <p data-lake-id="ueaa45829" id="ueaa45829"><span data-lake-id="uc7a988dd" id="uc7a988dd">​</span><br></p>
  <p data-lake-id="u85217177" id="u85217177"><span data-lake-id="u27761363" id="u27761363">操作系统时间片的使用是有规则的：某个作业在时间片结束之前，整个任务还没有完成，那么该作业就被暂停下来，放弃CPU，等待下一轮循环再继续做。此时CPU又分配给另一个作业去使用。</span></p>
  <p data-lake-id="ue7ff4a2d" id="ue7ff4a2d"><span data-lake-id="ubeb805e1" id="ubeb805e1">​</span><br></p>
  <p data-lake-id="u7fe74dde" id="u7fe74dde"><span data-lake-id="ua7718b1d" id="ua7718b1d">我们把目光聚焦在CPU的执行上，把这个过程放大的话，CPU就好像是一个电话亭。多个用户并不是同一时间在使用这个电话亭中的电话的，而是轮流使用的。</span></p>
  <p data-lake-id="u7c682529" id="u7c682529"><span data-lake-id="u76d0ccba" id="u76d0ccba">​</span><br></p>
  <p data-lake-id="uf63463f1" id="uf63463f1"><span data-lake-id="u1f69c9a7" id="u1f69c9a7">不同的操作系统，在选择“用户”分配时间片的调度算法是不一样的，常用的有FCFS、轮转、SPN、SRT、HRRN、反馈等。</span></p>
  <p data-lake-id="ufe7099ac" id="ufe7099ac"><span data-lake-id="u6d2478aa" id="u6d2478aa">​</span><br></p>
  <p data-lake-id="u0056a2e3" id="u0056a2e3"><span data-lake-id="uafc1d970" id="uafc1d970">这个电话亭可以允许哪个用户进入打电话是有不同的策略的，不同的电话亭规定不同，有的电话亭采用排队机制（FCFS）、有的优先分配给打电话时间最短的人（SPN）等。</span></p>
  <p data-lake-id="u56a57aec" id="u56a57aec"><br></p>
  <p data-lake-id="u202f33c1" id="u202f33c1"><br></p>
  <p data-lake-id="ucc347ead" id="ucc347ead"><br></p>
  <p data-lake-id="u579b4786" id="u579b4786"><span data-lake-id="ud04d69f8" id="ud04d69f8"><br><br></span></p>
 </body>
</html>